package com.junjiao.util.java;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.BeansException;

import com.junjiao.util.java.image.ZoomManage;

/**
 * 获取图片文件
 * 
 * @author jiaojun
 * @email eshore_jiaojun@163.com
 * @version 2.0 2010-6-13
 */
public class ImageDispatcher {
	// private static boolean startUp;
	// private static String saveDir;
	// private static List viewDirs;
	// // 查找缩略图 但是原图片不存在！
	// private static Map<String, String> noFindImgZoom;
	// private static List noFindImgZoomNeed = new ArrayList();
	// private static List noFindImgZoomSupply = new ArrayList();
	//
	// // 查找图片， 但原图片不存在！
	// private static Map<String, String> noFindImg;
	//
	// private static Map<String, String> noFindPerson;
	//
	// public static String getSaveDir() {
	// return saveDir;
	// }
	//
	// public static void setSaveDir(String saveDir) {
	// ImageDispatcher.saveDir = saveDir;
	// }
	//
	// public static boolean isStartUp() {
	// return startUp;
	// }
	//
	// public static void setStartUp(String startUp) {
	// if ("true".equals(startUp)) {
	// ImageDispatcher.startUp = true;
	// } else {
	// ImageDispatcher.startUp = false;
	// }
	// }
	//
	// public static List getViewDirs() {
	// return viewDirs;
	// }
	//
	// public static void setViewDirs(List viewDirs) {
	// ImageDispatcher.viewDirs = viewDirs;
	// }
	//
	// /**
	// * 响应客户端请求的图片的过滤器处理过程
	// *
	// * @param request
	// * @param response
	// * @param filterChain
	// * @throws IOException
	// * @throws ServletException
	// */
	// public static void doImageFilter(ServletRequest request,
	// ServletResponse response, FilterChain filterChain)
	// throws IOException, ServletException {
	// HttpServletRequest httpReq = (HttpServletRequest) request;
	// HttpServletResponse httpResp = (HttpServletResponse) response;
	// String reqStr = httpReq.getServletPath();
	// FileInputStream imgStream = null;
	// OutputStream toClientStream = null;
	//
	// try {
	// File file = findFile(reqStr);
	// if (file != null) {
	// imgStream = new FileInputStream(file);
	// int i = imgStream.available(); // 得到文件大小
	// httpResp.setContentType("image/*"); // 设置文件类型
	// httpResp.setContentLength(i); // 设置文件大小
	// toClientStream = httpResp.getOutputStream(); // 得到输出流
	// byte data[] = new byte[1024];
	// // 逐步输出数据
	// while ((i = imgStream.read(data)) > 0) {
	// toClientStream.write(data, 0, i);
	// toClientStream.flush();
	// }
	//
	// } else {
	// filterChain.doFilter(request, response);
	// }
	// } catch (IOException e) {
	// throw e;
	// } finally {
	// if (toClientStream != null) {
	// toClientStream.close();
	// }
	// if (imgStream != null) {
	// imgStream.close();
	// }
	// }
	// }
	//
	// /**
	// * 从数据库中filepath 字段中得到 图片缩略图
	// *
	// * @param filePath
	// * 2007/10/18/15/T3NHUG4MRO1D.jpg
	// * @param type
	// * 1,2,3,4,5
	// * @return /img/2007/10/18/15/scale_2_T3NHUG4MRO1D.jpg
	// */
	// public static String getImgZoom(String filePath, String type) {
	// String imgPath = "";
	// File file = ImageDispatcher.findFile(filePath);
	// if (file == null) {
	// // 原图片不存在！
	// if (noFindImgZoom == null || noFindImgZoom.isEmpty()) {
	// noFindImgZoom = new HashMap<String, String>();
	// noFindImgZoom.put("1", "sysImg/watermark/no-find-40-40.jpg");
	// noFindImgZoom.put("2", "sysImg/watermark/no-find-68-68.jpg");
	// noFindImgZoom.put("3", "sysImg/watermark/no-find-100-70.jpg");
	// // 4，5，6的类型是在分类信息中用到。4发布信息的图片200*200 5为个人用户的图片,6搜索结果页的图片大小119*79
	// noFindImgZoom.put("4",
	// "../sysImg/watermark/no-find-200-200.gif");
	// noFindImgZoom.put("5", "../sysImg/watermark/no-find-52-52.gif");
	// noFindImgZoom.put("6", "../sysImg/watermark/camera.gif");
	//
	// }
	// imgPath = noFindImgZoom.get(type);
	// } else {
	// int lastIndex = filePath.lastIndexOf("/");
	// String fileName = filePath.substring(lastIndex + 1);
	// StringBuffer str = new StringBuffer();
	// str.append(filePath.substring(0, lastIndex + 1)).append(
	// Constants.IMG_HEAD_NAME).append("_").append(type).append(
	// "_").append(fileName);
	// file = ImageDispatcher.findFile(str.toString());
	// if (file != null) {
	// // 返回缩略图路径
	// try {
	// imgPath = DeployInfoUtil.getImgHttpServerHost()
	// + str.toString();
	// } catch (BeansException e) {
	// e.printStackTrace();
	// } catch (Exception e) {
	// e.printStackTrace();
	// }
	// } else {
	// // 生成缩略图 返回路径
	// try {
	// imgPath = DeployInfoUtil.getImgHttpServerHost()
	// + ZoomManage.getZoomImageByPath(filePath, type);
	// } catch (BeansException e) {
	// e.printStackTrace();
	// } catch (Exception e) {
	// e.printStackTrace();
	// }
	// }
	// }
	// return imgPath;
	// }
	//
	// public static void initImage() {
	// noFindImgZoomSupply.add("../sysImg/watermark/1g.gif");
	// noFindImgZoomSupply.add("../sysImg/watermark/2g.gif");
	// noFindImgZoomSupply.add("../sysImg/watermark/3g.gif");
	// noFindImgZoomSupply.add("../sysImg/watermark/4g.gif");
	// noFindImgZoomSupply.add("../sysImg/watermark/5g.gif");
	// noFindImgZoomSupply.add("../sysImg/watermark/6g.gif");
	// noFindImgZoomSupply.add("../sysImg/watermark/7g.gif");
	// noFindImgZoomSupply.add("../sysImg/watermark/8g.gif");
	// noFindImgZoomNeed.add("../sysImg/watermark/1x.gif");
	// noFindImgZoomNeed.add("../sysImg/watermark/2x.gif");
	// noFindImgZoomNeed.add("../sysImg/watermark/3x.gif");
	// noFindImgZoomNeed.add("../sysImg/watermark/4x.gif");
	// noFindImgZoomNeed.add("../sysImg/watermark/5x.gif");
	// noFindImgZoomNeed.add("../sysImg/watermark/6x.gif");
	// noFindImgZoomNeed.add("../sysImg/watermark/7x.gif");
	// noFindImgZoomNeed.add("../sysImg/watermark/8x.gif");
	// }
	//
	// public static String getImgZoom1(String filePath, String type,
	// String relation, Integer index) {
	// if (index == 0)
	// initImage();
	// String imgPath = "";
	// Long randomNum = 0L;
	// File file = ImageDispatcher.findFile(filePath);
	// if (file == null) {
	// // 原图片不存在！
	// if (relation.equals("1")) {
	// if (noFindImgZoomSupply.size() == 8) {
	// randomNum = Math.round(Math.random()
	// * (noFindImgZoomSupply.size() - 1));
	// imgPath = noFindImgZoomSupply.get(randomNum.intValue())
	// .toString();
	// noFindImgZoomSupply.remove(randomNum.intValue());
	// } else if (noFindImgZoomSupply.size() == 7) {
	// randomNum = Math.round(Math.random()
	// * (noFindImgZoomSupply.size() - 1));
	// imgPath = noFindImgZoomSupply.get(randomNum.intValue())
	// .toString();
	// noFindImgZoomSupply.remove(randomNum.intValue());
	// } else {
	// randomNum = Math.round(Math.random()
	// * (noFindImgZoomSupply.size() - 1));
	// imgPath = noFindImgZoomSupply.get(randomNum.intValue())
	// .toString();
	// noFindImgZoomSupply.remove(randomNum.intValue());
	// }
	// }
	// if (relation.equals("0")) {
	// if (noFindImgZoomNeed.size() == 8) {
	// randomNum = Math.round(Math.random()
	// * (noFindImgZoomNeed.size() - 1));
	// imgPath = noFindImgZoomNeed.get(randomNum.intValue())
	// .toString();
	// noFindImgZoomNeed.remove(randomNum.intValue());
	// } else if (noFindImgZoomNeed.size() == 7) {
	// randomNum = Math.round(Math.random()
	// * (noFindImgZoomNeed.size() - 1));
	// imgPath = noFindImgZoomNeed.get(randomNum.intValue())
	// .toString();
	// noFindImgZoomNeed.remove(randomNum.intValue());
	// } else {
	// randomNum = Math.round(Math.random()
	// * (noFindImgZoomNeed.size() - 1));
	// imgPath = noFindImgZoomNeed.get(randomNum.intValue())
	// .toString();
	// noFindImgZoomNeed.remove(randomNum.intValue());
	// }
	// }
	// if (index == 2) {
	// noFindImgZoomSupply = new ArrayList();
	// noFindImgZoomNeed = new ArrayList();
	// }
	//
	// } else {
	// int lastIndex = filePath.lastIndexOf("/");
	// String fileName = filePath.substring(lastIndex + 1);
	// StringBuffer str = new StringBuffer();
	// str.append(filePath.substring(0, lastIndex + 1)).append(
	// Constants.IMG_HEAD_NAME).append("_").append(type).append(
	// "_").append(fileName);
	// file = ImageDispatcher.findFile(str.toString());
	// if (file != null) {
	// // 返回缩略图路径
	// try {
	// imgPath = DeployInfoUtil.getImgHttpServerHost()
	// + str.toString();
	// } catch (BeansException e) {
	//
	// e.printStackTrace();
	// } catch (Exception e) {
	//
	// e.printStackTrace();
	// }
	// } else {
	// // 生成缩略图 返回路径
	// try {
	// imgPath = DeployInfoUtil.getImgHttpServerHost();
	// // + //ZoomImage.getZoomImageByPath(filePath, type);
	// } catch (BeansException e) {
	// e.printStackTrace();
	// } catch (Exception e) {
	// e.printStackTrace();
	// }
	// }
	// }
	// return imgPath;
	// }
	//
	// public static String getPersonImgZoom(String filePath, String type) {
	// String imgPath = "";
	// File file = ImageDispatcher.findFile(filePath);
	// if (file == null) {
	// // 原图片不存在！
	// if (noFindPerson == null || noFindPerson.isEmpty()) {
	// noFindPerson = new HashMap<String, String>();
	// noFindPerson.put("1",
	// "sysImg/watermark/no-find-person-40-40.jpg");
	// noFindPerson.put("2",
	// "sysImg/watermark/no-find-person-68-68.jpg");
	// noFindPerson.put("3",
	// "sysImg/watermark/no-find-person-100-70.jpg");
	// }
	// imgPath = noFindPerson.get(type);
	// } else {
	// int lastIndex = filePath.lastIndexOf("/");
	// String fileName = filePath.substring(lastIndex + 1);
	// StringBuffer str = new StringBuffer();
	// str.append(filePath.substring(0, lastIndex + 1)).append(
	// Constants.IMG_HEAD_NAME).append("_").append(type).append(
	// "_").append(fileName);
	// file = ImageDispatcher.findFile(str.toString());
	// if (file != null) {
	// // 返回缩略图路径
	// try {
	// imgPath = DeployInfoUtil.getImgHttpServerHost()
	// + str.toString();
	// } catch (BeansException e) {
	// e.printStackTrace();
	// } catch (Exception e) {
	// e.printStackTrace();
	// }
	// } else {
	// // 生成缩略图 返回路径
	// try {
	// imgPath = DeployInfoUtil.getImgHttpServerHost()
	// + ZoomManage.getZoomImageByPath(filePath, type);
	// } catch (BeansException e) {
	// e.printStackTrace();
	// } catch (Exception e) {
	// e.printStackTrace();
	// }
	// }
	// }
	// return imgPath;
	// }
	//
	// /**
	// * 从数据库中得到图片地址
	// *
	// * @param filePath
	// * /img/2007/10/18/15/T3NHUG4MRO1D.jpg
	// * http://biz.wangmei.local/upload/myshop/1006241347278131.gif
	// * @param type
	// * 1,2,3
	// * @return
	// */
	// public static String getImg(String filePath, String type) {
	// String imgPath = "";
	// if (filePath == null || "".equals(filePath)) {
	// if (noFindImg == null || noFindImg.isEmpty()) {
	// noFindImg = new HashMap<String, String>();
	// noFindImg.put("1", "/sysImg/watermark/person-logo-big.gif");
	// noFindImg.put("2", "/sysImg/watermark/person-logo-small.gif");
	// noFindImg.put("3", "/sysImg/watermark/noIcon.gif");
	//
	// // 商家空间产品无图片
	// noFindImg.put("7", "/sysImg/watermark/company-picture-big.gif");
	// noFindImg.put("8",
	// "/sysImg/watermark/company-picture-small.gif");
	//
	// }
	// imgPath = noFindImg.get(type);
	// return imgPath;
	// }
	// File file = ImageDispatcher.findFile(filePath);
	// if (file == null) {
	// // 原图片不存在！
	// if (noFindImg == null || noFindImg.isEmpty()) {
	// noFindImg = new HashMap<String, String>();
	// noFindImg.put("1", "/sysImg/watermark/person-logo-big.gif");
	// noFindImg.put("2", "/sysImg/watermark/person-logo-small.gif");
	// noFindImg.put("3", "/sysImg/watermark/noIcon.gif");
	// // 商家空间产品无图片
	// noFindImg.put("7", "/sysImg/watermark/company-picture-big.gif");
	// noFindImg.put("8",
	// "/sysImg/watermark/company-picture-small.gif");
	// }
	// imgPath = noFindImg.get(type);
	// } else {
	// // imgPath = Constants.IMG_MAPPING_PATH + filePath;
	// try {
	// imgPath = DeployInfoUtil.getImgHttpServerHost() + filePath;
	// } catch (BeansException e) {
	// e.printStackTrace();
	// } catch (Exception e) {
	// e.printStackTrace();
	// }
	// }
	// return imgPath;
	// }
	//
	// /**
	// * 根据关联目录名,返回该目录的真实路径 z:\image\
	// *
	// * @param name
	// * @return
	// */
	// public static String getSaveImgDir(String name) {
	// StringBuffer imgDir = new StringBuffer();
	// if (startUp && saveDir != null) {
	// imgDir.append(saveDir);
	// } else {
	// try {
	// imgDir.append(DeployInfoUtil.getUploadImgPath());
	// } catch (BeansException e) {
	// e.printStackTrace();
	// } catch (Exception e) {
	// e.printStackTrace();
	// }
	// }
	// if (name != null) {
	// imgDir.append(name).append("/");
	// }
	//
	// return imgDir.toString();
	// }
	//
	// /**
	// * 根据相对路径查找真实路径,如果不存在返回空
	// *
	// * @param absPath
	// * 2000/10/10/19/9GZJO8QN1QWX.jpg
	// *
	// * @return
	// */
	// public static File findFile(String absPath) {
	// File file = null;
	// if (startUp && saveDir != null) {
	// file = new File(saveDir + absPath);
	// if (file.isFile()) {
	// return file;
	// } else if (viewDirs != null) {
	// for (Iterator it = viewDirs.iterator(); it.hasNext();) {
	// file = new File((String) it.next() + absPath);
	// if (file.isFile()) {
	// return file;
	// }
	// }
	// }
	// } else {
	// try {
	// file = new File(DeployInfoUtil.getUploadImgPath() + absPath);
	// } catch (BeansException e) {
	// e.printStackTrace();
	// } catch (Exception e) {
	// e.printStackTrace();
	// }
	// if (file.isFile()) {
	// return file;
	// }
	// }
	// return null;
	// }
	//
	// public static Map<String, String> getNoFindImgZoom() {
	// return noFindImgZoom;
	// }
	//
	// public static void setNotFindImgZoom(Map<String, String> noFindImgZoom) {
	// ImageDispatcher.noFindImgZoom = noFindImgZoom;
	// }
	//
	// public static Map<String, String> getNoFindImg() {
	// return noFindImg;
	// }
	//
	// public static void setNoFindImg(Map<String, String> noFindImg) {
	// ImageDispatcher.noFindImg = noFindImg;
	// }
	//
	// /**
	// * 删除一张原图
	// *
	// * @param filePath
	// */
	// public static void delFile(String filePath) {
	// File file = findFile(filePath);
	// if (file != null) {
	// file.delete();
	// }
	// }
	//
	// /**
	// * 删除一张原图及三张缩略图
	// */
	// public static void delAllFile(String filePath) {
	// ArrayList fileList = getAllFile(filePath);
	// if (fileList != null) {
	// for (int i = 0; i < fileList.size(); i++) {
	// File file = findFile((String) fileList.get(i));
	// if (file != null) {
	// file.delete();
	// }
	// }
	// }
	// }
	//
	// /**
	// * 批量删除图片及三张缩略图 imgList 是String 列
	// */
	// public static void delAllFile(List imgList) {
	// if (imgList != null) {
	// Iterator it = imgList.iterator();
	// while (it.hasNext()) {
	// String imgPath = (String) it.next();
	// ImageDispatcher.delAllFile(imgPath);// 删除图片及缩略图
	// }
	// }
	// }
	//
	// /**
	// * 取得原图及缩略图 filePath ="2007/10/18/19/P2WBPFLVVCN1.jpg" return ArrayList
	// * 2007/10/18/19/P2WBPFLVVCN1.jpg 2007/10/18/19/scale_3_P2WBPFLVVCN1.jpg
	// * 2007/10/18/19/scale_2_P2WBPFLVVCN1.jpg
	// * 2007/10/18/19/scale_1_P2WBPFLVVCN1.jpg
	// */
	// public static ArrayList getAllFile(String filePath) {
	// ArrayList array = new ArrayList();
	// array.add(filePath);
	// try {
	// int lastIndex = filePath.lastIndexOf("/");
	// String fileName = filePath.substring(lastIndex + 1);
	// Map map = DeployInfoUtil.getImgSize();
	// Iterator it = map.keySet().iterator();
	// while (it.hasNext()) {
	// StringBuffer str = new StringBuffer();
	// str.append(filePath.substring(0, lastIndex + 1)).append(
	// Constants.IMG_HEAD_NAME).append("_").append(it.next())
	// .append("_").append(fileName);
	// array.add(str.toString());
	// }
	// } catch (Exception e) {
	// e.printStackTrace();
	// }
	// return array;
	// }
	//
	// public static List getNoFindImgZoomNeed() {
	// return noFindImgZoomNeed;
	// }
	//
	// public static void setNoFindImgZoomNeed(List noFindImgZoomNeed) {
	// ImageDispatcher.noFindImgZoomNeed = noFindImgZoomNeed;
	// }
	//
	// public static List getNoFindImgZoomSupply() {
	// return noFindImgZoomSupply;
	// }
	//
	// public static void setNoFindImgZoomSupply(List noFindImgZoomSupply) {
	// ImageDispatcher.noFindImgZoomSupply = noFindImgZoomSupply;
	// }
	//
	// // add 2009-12-11
	// public static String randomFoodImage(String filePath) {
	// int index = (int) (Math.random() * 7) + 1;
	// if (index > 7) {
	// index = 7;
	// }
	// String imagePath = "images/food/bt1.jpg";
	// if (filePath == null) {
	// imagePath = "images/food/bt" + index + ".jpg";
	// return imagePath;
	// }
	// File file = ImageDispatcher.findFile(filePath);
	// if (file == null) {
	// imagePath = "images/food/bt" + index + ".jpg";
	// } else {
	// try {
	// imagePath = DeployInfoUtil.getImgHttpServerHost() + filePath;
	// } catch (BeansException e) {
	// e.printStackTrace();
	// } catch (Exception e) {
	// e.printStackTrace();
	// }
	// }
	// return imagePath;
	// }

}
